IT鐵人
生活中很常對各種東西做出比較,哪本書比較好看、哪個星座比較好相處、安卓跟蘋果哪個更好用,種種的比較很難有一定的答案,我們要針對某個特定的項目作比較才行,比如說我們拿戰鬥機跟客機比較:
戰鬥機 | 客機 |
---|---|
單純直接說哪個比較好都不公平,戰鬥機絕對能得到速度上的優勢,而客機絕對能在載運人數上勝過對方。
剛剛提到的速度跟載運人數,類似於電腦的Response time (Execution time) 和Throughput,前者代表工作開始到完成所花的時間,後者代表單位時間所完成的工作量,在不同情況我們會考慮用不同的標準檢視,比如說在個人電腦中我們比較在乎Response time,多人共用的伺服器我們比較在乎Throughput。
Response time(Execution time) | Throughput |
---|---|
工作從開始到完成所花的時間 | 單位時間內所完成的工作量 |
個人電腦 | 多人共用伺服器 |
要討論電腦的優秀程度,我們定義Performance = $\frac{1}{Execution Time}$
所以如果有兩部電腦X與Y:
Performance~X~>Performance~Y~
-> $\frac{1}{Execution Time~X~}$ > $\frac{1}{Execution Time~Y~}$
-> Execution Time~Y~ > Execution Time~X~
比較兩台不同電腦的效能,X的速度是Y的n倍則表示成:
$\frac{Performance~X~}{Performance~Y~}$ = n
此時Y的執行時間會是X的n倍。
前面提到的Execution Time,包含了很多動作,比如說硬碟存時間、記憶體存取時間、輸入/輸出時間、作業系統時間等等。
CPU Execution Time,簡稱為CPU Time,是指CPU花在處理某一項工作的時間,不包括那些存取以及輸入輸出的時間。
而CPU Time又有User CPU Time跟System CPU Time兩者,前者是執行程式的部分,後者是為了服務程式執行所花在作業系統上的時間。
大概是下圖這樣:
一個程式的CPU Time = Clock cycles x Clock cycle time,也就是Clock跑了幾個循環,乘以一個循環會跑多少時間,就是整個程式到底使用了多久的CPU,底下慢慢跟各位介紹CPI(Clock per Instruction)。
CPI是Clock per Instruction的縮寫。
一個程式一定有很多行的程式碼,轉換成Assembly code之後通常會有更多行。
Assembly code複習
add $t0 $t1 $t2 (將t1加上t2的結果放在t0 register)
CPI的算法為 $\frac{Clock Cycles}{Instruction count}$。
也就是說Clock Cycles = CPI x Instruction count。
套回去CPU Time = Clock cycles x Clock cycle time
= CPI x Instruction count x Clock cycle time。
不過因為不是每個Instruction的執行時間,所以準確來說Clock cycle應該要寫成 $\sum{CPIi * Ci}$ (C~i~代表類別i所使用之指令個數)
講講都是紙上談兵,我們現在實際在紙上操作一次。
假設有兩個使用相同ISA的電腦,執行同一個程式,
Machine A的clock cycle time為250ps,CPI為2.0,
Machine B的clock cycle time為500ps,CPI為1.2。
請問哪一部電腦比較快?快多少?
假設總共有I個cycle。
首先算出A的CPU cycles = I x 2。
B的CPU cycles = I x 1.2。
CPU time A = 2I x 250ps = 500I ps
CPU time B = 1.2I x 500ps = 600I ps
$\frac{Performance A}{Performance B}$ = $\frac{Execution Time B}{Execution Time A}$ = $\frac{600I}{500I}$ = 1.2
所以A的速度是B的1.2倍。
Consider the following performance measurements for a program:
Measurement | Computer A | Computer B |
---|---|---|
Instruction count | 10 billion | 8billion |
Clock cycle time | 250ps | 250ps |
CPI | 1.0 | 1.1 |
Which computer is faster?
上一篇 | 下一篇 |
---|---|
CLA以及bit乘法 | Build a CPU |